# 122.买卖股票的最佳时机II
# 给你一个整数数组prices ，其中prices[i]表示某支股票第i天的价格。
# 在每一天，你可以决定是否购买和 / 或出售股票。你在任何时候最多只能持有一股股票。你也可以先购买，然后在同一天出售。返回你能获得的最大利润 。
#
# 示例1：
# 输入：prices = [7, 1, 5, 3, 6, 4]
# 输出：7
# 解释：在第2天（股票价格 = 1）的时候买入，在第3天（股票价格 = 5）的时候卖出, 这笔交易所能获得利润 = 5 - 1 = 4 。
# 随后，在第4天（股票价格 = 3）的时候买入，在第5天（股票价格 = 6）的时候卖出, 这笔交易所能获得利润 = 6 - 3 = 3 。
# 总利润为4 + 3 = 7 。
#
# 示例2：
# 输入：prices = [1, 2, 3, 4, 5]
# 输出：4
# 解释：在第1天（股票价格 = 1）的时候买入，在第5天 （股票价格 = 5）的时候卖出, 这笔交易所能获得利润 = 5 - 1 = 4 。总利润为4 。
#
# 示例3：
# 输入：prices = [7, 6, 4, 3, 1]
# 输出：0
# 解释：在这种情况下, 交易无法获得正利润，所以不参与交易可以获得最大利润，最大利润为0 。


class Solution:
    # 以前做出来过，刚刚做出来发现，和之前是一样的，即求递增序列的值
    def maxProfit(self, prices: [int]) -> int:
        first = prices[0]
        res = 0
        for i in range(1, len(prices)):
            tmp = prices[i] - first
            if tmp > 0:
                res += tmp
            first = prices[i]
        return res

    def maxProfit2(self, prices: [int]) -> int:
        # 卡哥的思路更有意思，算出每天的利润，取所有的正利润即可。
        res = 0
        for i in range(1,len(prices)):
            tmp = prices[i] - prices[i-1]
            if tmp >= 0:
                res = max(tmp+res,res)
        return res


if __name__ == '__main__':
    price = [7,1,5,3,6,4]
    tmp = Solution()
    res = tmp.maxProfit(price)
    res = tmp.maxProfit2(price)
    print(res)